perm filename TESTE.SAI[1,JMC] blob sn#005250 filedate 1970-07-11 generic text, type T, neo UTF8
00100	begin integer x,y,u,v,w,z,a,b,l,k,brk,i,j; real eps; boolean p;
00200	external real procedure realscan(reference string x;reference integer xx);
00300	string temp_shit;
00350	require 2000 system_pdl;
00400	integer procedure gcd(integer  i,  j);
00500	begin integer t; label a;
00600	if i>j then i ↔ j;
00700	a:
00800	if i=0 then return(j);
00900	t←j mod i; j←i; i←t;
01000	go to a end;
01100	 outstr("
01200	l="); l←cvd(inchwl); outstr("eps=");
01300	temp_shit←inchwl;  eps←realscan(temp_shit,brk) ;
01400	begin label q,r,s; integer array ma[1:l],na[1:l],o[1:l];
01500	comment Here is the sort procedure.;
01600	recursive procedure sorta(integer k,l);
01700	begin integer min, max,mid,j,m,n; label p,q,r;
01800	if k=l then return;
01900	if k+1=l then begin if o[k]>o[l] then
02000	 begin o[k]↔o[l]; ma[k]↔ma[l];na[k]↔na[l] end; return end;
02100	
02200	min←max←o[k];
02300	for j←k+1 step 1 until l do begin
02400	if o[j]<min then min←o[j];
02500	if o[j]>max then max←o[j] end;
02600	if min=max then return;
02700	
02800	mid←(min+max)%2; m←k; n←l;
02900	p:
03000	if m=n then go to r; if o[n]>mid then
03100		begin n←n-1; go to p end;
03200	q:
03300	if m=n then go to r; if  o[m]≤mid then
03400		begin m←m+1; go to q end;
03500	begin o[m]↔o[n]; ma[m]↔ma[n];na[m]↔na[n] end; go to p;
03600	r:
03700	if o[m]>mid then begin sorta(k,m-1); sorta(m,l); return end else
03800	begin sorta(k,m); sorta(m+1,l); return end end;
03850	
03900	u←0;outstr("a="); a←cvd(inchwl); go to q;
04000	r:
04100	a←b;
04200	q:
04300	b←a+eps*l*a↑0.3333; k←0;
04400	i4300
04500	for i← (0.5*a)↑0.3333 step 1 until b↑0.3334+1 do
04600	begin x←i↑3; z←(if x<a then (a-x)↑0.3333 else 1); y←(b-x)↑0.3334+1;
04700	for j←z step 1 until (if i<y then i else y) do
04800	begin w←x+j↑3; if a≤w∧w<b then
04900	begin if k=l then begin eps←0.9*eps; go to q end;
05000	begin k←k+1; ma[k]←i; na[k]←j; o[k]←w end end end end;
05100	
05200	go to s; outstr("p=");p←cvd(inchwl); if p then go to s;
05300	outstr("
05400	"&cvs(a)&" "&cvs(b)&" "&cvs(k));
05500	for j←1 step 1 until k do outstr("
05600	j"&cvs(j)&"o"
05700	&cvs(o[j])
05800	&"ma"&cvs(ma[j])&"na"&cvs(na[j]));
05900	s:
06000	sorta(1,k);
06100	p←1;
06200	if ¬p then for j←1 step 1 until k do
06300	outstr("
06400	j"&cvs(j)&"o"&cvs(o[j])&"ma"&cvs(ma[j])&"na"&cvs(na[j]));
06500	for j←1 step 1 until k-1 do
06600	if o[j]=o[j+1] ∧ gcd(ma[j],gcd(na[j],gcd(ma[j+1],na[j+1])))=1
06700	then begin u←u+1; outstr("
06800	"&cvs(u)&".	"&cvs(o[j])&" = "&cvs(ma[j])&"↑3 + "&cvs(na[j])&
06900	"↑3 = "&cvs(ma[j+1])&"↑3 + "&cvs(na[j+1])&"↑3") end;
07000	go to r end end;